#include "lvgl.h"
#include "esp_event.h"
#include "esp_lvgl_port.h"


/*********************** 开机界面 ****************************/
// （开机界面代码保持不变）
extern const lv_img_dsc_t start_icon;
lv_obj_t *MdLink_logo;

static void splash_animation_cb(void *img, int32_t opa)
{
    lv_obj_set_style_img_opa((lv_obj_t *)img, opa, 0);
}
void ui_main_init();

#include "myFont.h"
void load_main_screen(lv_anim_t *anim)
{
    lvgl_port_lock(0); // 进入LVGL临界区

//     //1. 设置屏幕背景（白色）
//     lv_obj_t *scr = lv_scr_act();
//     lv_obj_set_style_bg_color(scr, lv_color_hex(0xFFFFFF), LV_PART_MAIN);
//    lv_obj_set_style_bg_opa(scr, LV_OPA_COVER, LV_PART_MAIN);

    // 2. 删除旧的logo（保留原逻辑）
    if (MdLink_logo) {
        lv_obj_del(MdLink_logo);
        MdLink_logo = NULL;
    }

    // 3. 映射中文字库（确保此函数正确将字体二进制映射到内存）
    font_flash_mmap(); // 需确保该函数成功执行，map_ptr有效
    ui_main_init();//
    // // 4. 创建标签显示中文，验证字体
    // lv_obj_t *test_label = lv_label_create(scr);
    // lv_label_set_text(test_label, "你好,世界!"); // 中文文本
    // LV_FONT_DECLARE(myFont);
    // // 5. 为标签指定自定义中文字体
    // lv_obj_set_style_text_font(test_label, &myFont, LV_PART_MAIN);

    // // 6. 调整标签位置（屏幕中心）
    // lv_obj_align(test_label, LV_ALIGN_CENTER, 0, 0);

    // // （可选）设置文本颜色为黑色，与白色背景对比
    // lv_obj_set_style_text_color(test_label, lv_color_hex(0x000000), LV_PART_MAIN);

    lvgl_port_unlock(); // 退出LVGL临界区
}
void lv_gui_start(void)
{
    lvgl_port_lock(0);
    lv_obj_clean(lv_scr_act());
    lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x000000), 0);
    lv_obj_set_style_bg_opa(lv_scr_act(), LV_OPA_COVER, 0);

    LV_IMG_DECLARE(start_icon);
    MdLink_logo = lv_img_create(lv_scr_act());
    lv_obj_set_style_transform_pivot_x(MdLink_logo, LV_PCT(50), 0);
    lv_obj_set_style_transform_pivot_y(MdLink_logo, LV_PCT(50), 0);
    lv_img_set_src(MdLink_logo, &start_icon);
    lv_obj_align(MdLink_logo, LV_ALIGN_CENTER, 0, 0);
    lv_obj_set_style_img_opa(MdLink_logo, LV_OPA_COVER, 0);

    // 淡入动画
    lv_anim_t anim_in;
    lv_anim_init(&anim_in);
    lv_anim_set_var(&anim_in, MdLink_logo);
    lv_anim_set_exec_cb(&anim_in, (lv_anim_exec_xcb_t)splash_animation_cb);
    lv_anim_set_values(&anim_in, LV_OPA_TRANSP, LV_OPA_COVER);
    lv_anim_set_time(&anim_in, 100);
    lv_anim_start(&anim_in);

    // 淡出动画
    lv_anim_t anim_out;
    lv_anim_init(&anim_out);
    lv_anim_set_var(&anim_out, MdLink_logo);
    lv_anim_set_exec_cb(&anim_out, (lv_anim_exec_xcb_t)splash_animation_cb);
    lv_anim_set_values(&anim_out, LV_OPA_COVER, LV_OPA_TRANSP);
    lv_anim_set_time(&anim_out, 1500);
    lv_anim_set_delay(&anim_out, 100);
    lv_anim_set_ready_cb(&anim_out, load_main_screen);
    lv_anim_start(&anim_out);

    lvgl_port_unlock();
}
